﻿using System;
using System.ComponentModel;
using System.Reflection;
using System.Runtime.InteropServices;

namespace Teigha.Core
{
	public class OdGiGeometrySimplifier : OdGiConveyorGeometry, IDisposable
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public OdGiGeometrySimplifier(IntPtr cPtr, bool cMemoryOwn)
		{
			this.swigCMemOwn = cMemoryOwn;
			this.swigCPtr = new HandleRef(this, cPtr);
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public static HandleRef getCPtr(OdGiGeometrySimplifier obj)
		{
			if (obj != null)
			{
				return obj.swigCPtr;
			}
			return new HandleRef(null, IntPtr.Zero);
		}

		~OdGiGeometrySimplifier()
		{
			this.Dispose();
		}

		public virtual void Dispose()
		{
			if (this.swigCPtr.Handle != IntPtr.Zero)
			{
				if (this.swigCMemOwn)
				{
					lock (this.locker)
					{
						if (this.swigCPtr.Handle != IntPtr.Zero && this.swigCMemOwn)
						{
							this.swigCMemOwn = false;
							GlobalsPINVOKE.delete_OdGiGeometrySimplifier(this.swigCPtr);
						}
					}
					this.swigCMemOwn = false;
				}
				this.swigCPtr = new HandleRef(null, IntPtr.Zero);
			}
			GC.SuppressFinalize(this);
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		HandleRef OdGiConveyorGeometry.GetCPtr()
		{
			return new HandleRef(this, GlobalsPINVOKE.OdGiGeometrySimplifier_OdGiConveyorGeometry_GetCPtr(this.swigCPtr.Handle));
		}

		protected virtual bool plineArcSegmentsAsArcProc(uint drawContextFlags)
		{
			bool result = this.SwigDerivedClassHasMethod("plineArcSegmentsAsArcProc", OdGiGeometrySimplifier.swigMethodTypes47) ? GlobalsPINVOKE.OdGiGeometrySimplifier_plineArcSegmentsAsArcProcSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, drawContextFlags) : GlobalsPINVOKE.OdGiGeometrySimplifier_plineArcSegmentsAsArcProc(this.swigCPtr, drawContextFlags);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdGiGeometrySimplifier() : this(GlobalsPINVOKE.new_OdGiGeometrySimplifier(), true)
		{
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			this.SwigDirectorConnect();
		}

		public void setDeviation(OdGeDoubleArray deviations)
		{
			GlobalsPINVOKE.OdGiGeometrySimplifier_setDeviation__SWIG_0(this.swigCPtr, OdGeDoubleArray.getCPtr(deviations));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public void setDeviation(OdGiDeviation pDeviation)
		{
			GlobalsPINVOKE.OdGiGeometrySimplifier_setDeviation__SWIG_1(this.swigCPtr, pDeviation.GetCPtr());
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdGsView.RenderMode renderMode()
		{
			OdGsView.RenderMode result = (OdGsView.RenderMode)GlobalsPINVOKE.OdGiGeometrySimplifier_renderMode(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setDrawContext(OdGiConveyorContext pDrawCtx)
		{
			GlobalsPINVOKE.OdGiGeometrySimplifier_setDrawContext(this.swigCPtr, pDrawCtx.GetCPtr());
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdGiConveyorContext drawContext()
		{
			OdGiConveyorContext_Internal result = new OdGiConveyorContext_Internal(GlobalsPINVOKE.OdGiGeometrySimplifier_drawContext__SWIG_0(this.swigCPtr), false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual void polylineOut(OdGePoint3d[] numPoints)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				if (this.SwigDerivedClassHasMethod("polylineOut", OdGiGeometrySimplifier.swigMethodTypes48))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polylineOutSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, intPtr);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polylineOut__SWIG_0(this.swigCPtr, intPtr);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polygonOut(OdGePoint3d[] numPoints, OdGeVector3d pNormal)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				if (this.SwigDerivedClassHasMethod("polygonOut", OdGiGeometrySimplifier.swigMethodTypes49))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polygonOutSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal));
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polygonOut__SWIG_0(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal));
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polygonOut(OdGePoint3d[] numPoints)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				if (this.SwigDerivedClassHasMethod("polygonOut", OdGiGeometrySimplifier.swigMethodTypes50))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polygonOutSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, intPtr);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polygonOut__SWIG_1(this.swigCPtr, intPtr);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public void setVertexData(OdGePoint3d[] numVertices, OdGiVertexData pVertexData)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numVertices);
			try
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_setVertexData__SWIG_0(this.swigCPtr, intPtr, OdGiVertexData.getCPtr(pVertexData));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public void setVertexData(OdGePoint3d[] numVertices)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numVertices);
			try
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_setVertexData__SWIG_1(this.swigCPtr, intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public int vertexDataCount()
		{
			int result = GlobalsPINVOKE.OdGiGeometrySimplifier_vertexDataCount(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdGePoint3d[] vertexDataList()
		{
			return Helpers.UnMarshalPoint3dArray(GlobalsPINVOKE.OdGiGeometrySimplifier_vertexDataList(this.swigCPtr));
		}

		public OdGiVertexData vertexData()
		{
			IntPtr intPtr = GlobalsPINVOKE.OdGiGeometrySimplifier_vertexData(this.swigCPtr);
			OdGiVertexData result = (intPtr == IntPtr.Zero) ? null : new OdGiVertexData(intPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public IntPtr baseSubEntMarker()
		{
			IntPtr result = GlobalsPINVOKE.OdGiGeometrySimplifier_baseSubEntMarker(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual void plineProc(OdGiPolyline polyline, OdGeMatrix3d pXfm, uint fromIndex, uint numSegs)
		{
			if (this.SwigDerivedClassHasMethod("plineProc", OdGiGeometrySimplifier.swigMethodTypes0))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_plineProcSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, OdGiPolyline.getCPtr(polyline), OdGeMatrix3d.getCPtr(pXfm), fromIndex, numSegs);
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_plineProc__SWIG_0(this.swigCPtr, OdGiPolyline.getCPtr(polyline), OdGeMatrix3d.getCPtr(pXfm), fromIndex, numSegs);
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void plineProc(OdGiPolyline polyline, OdGeMatrix3d pXfm, uint fromIndex)
		{
			if (this.SwigDerivedClassHasMethod("plineProc", OdGiGeometrySimplifier.swigMethodTypes1))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_plineProcSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, OdGiPolyline.getCPtr(polyline), OdGeMatrix3d.getCPtr(pXfm), fromIndex);
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_plineProc__SWIG_1(this.swigCPtr, OdGiPolyline.getCPtr(polyline), OdGeMatrix3d.getCPtr(pXfm), fromIndex);
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void plineProc(OdGiPolyline polyline, OdGeMatrix3d pXfm)
		{
			if (this.SwigDerivedClassHasMethod("plineProc", OdGiGeometrySimplifier.swigMethodTypes2))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_plineProcSwigExplicitOdGiGeometrySimplifier__SWIG_2(this.swigCPtr, OdGiPolyline.getCPtr(polyline), OdGeMatrix3d.getCPtr(pXfm));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_plineProc__SWIG_2(this.swigCPtr, OdGiPolyline.getCPtr(polyline), OdGeMatrix3d.getCPtr(pXfm));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void plineProc(OdGiPolyline polyline)
		{
			if (this.SwigDerivedClassHasMethod("plineProc", OdGiGeometrySimplifier.swigMethodTypes3))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_plineProcSwigExplicitOdGiGeometrySimplifier__SWIG_3(this.swigCPtr, OdGiPolyline.getCPtr(polyline));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_plineProc__SWIG_3(this.swigCPtr, OdGiPolyline.getCPtr(polyline));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void polylineProc(OdGePoint3d[] numPoints, OdGeVector3d pNormal, OdGeVector3d pExtrusion, IntPtr baseSubEntMarker)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				if (this.SwigDerivedClassHasMethod("polylineProc", OdGiGeometrySimplifier.swigMethodTypes4))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polylineProcSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal), OdGeVector3d.getCPtr(pExtrusion), baseSubEntMarker);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polylineProc(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal), OdGeVector3d.getCPtr(pExtrusion), baseSubEntMarker);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polygonProc(OdGePoint3d[] numPoints, OdGeVector3d pNormal, OdGeVector3d pExtrusion)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				if (this.SwigDerivedClassHasMethod("polygonProc", OdGiGeometrySimplifier.swigMethodTypes5))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polygonProcSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal), OdGeVector3d.getCPtr(pExtrusion));
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polygonProc__SWIG_0(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal), OdGeVector3d.getCPtr(pExtrusion));
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polygonProc(OdGePoint3d[] numPoints, OdGeVector3d pNormal)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				if (this.SwigDerivedClassHasMethod("polygonProc", OdGiGeometrySimplifier.swigMethodTypes6))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polygonProcSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal));
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polygonProc__SWIG_1(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal));
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polygonProc(OdGePoint3d[] numPoints)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				if (this.SwigDerivedClassHasMethod("polygonProc", OdGiGeometrySimplifier.swigMethodTypes7))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polygonProcSwigExplicitOdGiGeometrySimplifier__SWIG_2(this.swigCPtr, intPtr);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polygonProc__SWIG_2(this.swigCPtr, intPtr);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void xlineProc(OdGePoint3d firstPoint, OdGePoint3d secondPoint)
		{
			if (this.SwigDerivedClassHasMethod("xlineProc", OdGiGeometrySimplifier.swigMethodTypes8))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_xlineProcSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, OdGePoint3d.getCPtr(firstPoint), OdGePoint3d.getCPtr(secondPoint));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_xlineProc(this.swigCPtr, OdGePoint3d.getCPtr(firstPoint), OdGePoint3d.getCPtr(secondPoint));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void rayProc(OdGePoint3d basePoint, OdGePoint3d throughPoint)
		{
			if (this.SwigDerivedClassHasMethod("rayProc", OdGiGeometrySimplifier.swigMethodTypes9))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_rayProcSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, OdGePoint3d.getCPtr(basePoint), OdGePoint3d.getCPtr(throughPoint));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_rayProc(this.swigCPtr, OdGePoint3d.getCPtr(basePoint), OdGePoint3d.getCPtr(throughPoint));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void meshProc(MeshData numRows)
		{
			IntPtr intPtr = Helpers.MarshalMeshData(numRows);
			try
			{
				if (this.SwigDerivedClassHasMethod("meshProc", OdGiGeometrySimplifier.swigMethodTypes10))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_meshProcSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, intPtr);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_meshProc(this.swigCPtr, intPtr);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void generateMeshWires(MeshData numRows)
		{
			IntPtr intPtr = Helpers.MarshalMeshData(numRows);
			try
			{
				if (this.SwigDerivedClassHasMethod("generateMeshWires", OdGiGeometrySimplifier.swigMethodTypes51))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateMeshWiresSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, intPtr);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateMeshWires(this.swigCPtr, intPtr);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void generateMeshFaces(MeshData numRows)
		{
			IntPtr intPtr = Helpers.MarshalFaceData(numRows);
			try
			{
				if (this.SwigDerivedClassHasMethod("generateMeshFaces", OdGiGeometrySimplifier.swigMethodTypes52))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateMeshFacesSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, intPtr);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateMeshFaces(this.swigCPtr, intPtr);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void meshFaceOut(SWIGTYPE_p_OdInt32 faceList, OdGeVector3d pNormal)
		{
			if (this.SwigDerivedClassHasMethod("meshFaceOut", OdGiGeometrySimplifier.swigMethodTypes53))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_meshFaceOutSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, SWIGTYPE_p_OdInt32.getCPtr(faceList), OdGeVector3d.getCPtr(pNormal));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_meshFaceOut(this.swigCPtr, SWIGTYPE_p_OdInt32.getCPtr(faceList), OdGeVector3d.getCPtr(pNormal));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void shellProc(ShellData numVertices)
		{
			IntPtr intPtr = Helpers.MarshalShellData(numVertices);
			try
			{
				if (this.SwigDerivedClassHasMethod("shellProc", OdGiGeometrySimplifier.swigMethodTypes11))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_shellProcSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, intPtr);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_shellProc(this.swigCPtr, intPtr);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void generateShellWires(int[] faceListSize, EdgeData pEdgeData, FaceData pFaceData)
		{
			IntPtr intPtr = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				if (this.SwigDerivedClassHasMethod("generateShellWires", OdGiGeometrySimplifier.swigMethodTypes54))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellWiresSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, intPtr, pEdgeData, pFaceData);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellWires__SWIG_0(this.swigCPtr, intPtr, pEdgeData, pFaceData);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void generateShellWires(int[] faceListSize, EdgeData pEdgeData)
		{
			IntPtr intPtr = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				if (this.SwigDerivedClassHasMethod("generateShellWires", OdGiGeometrySimplifier.swigMethodTypes55))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellWiresSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, intPtr, pEdgeData);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellWires__SWIG_1(this.swigCPtr, intPtr, pEdgeData);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void generateShellWires(int[] faceListSize)
		{
			IntPtr intPtr = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				if (this.SwigDerivedClassHasMethod("generateShellWires", OdGiGeometrySimplifier.swigMethodTypes56))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellWiresSwigExplicitOdGiGeometrySimplifier__SWIG_2(this.swigCPtr, intPtr);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellWires__SWIG_2(this.swigCPtr, intPtr);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void generateShellFaces(int[] faceListSize, EdgeData pEdgeData, FaceData pFaceData)
		{
			IntPtr intPtr = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				if (this.SwigDerivedClassHasMethod("generateShellFaces", OdGiGeometrySimplifier.swigMethodTypes57))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellFacesSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, intPtr, pEdgeData, pFaceData);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellFaces__SWIG_0(this.swigCPtr, intPtr, pEdgeData, pFaceData);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void generateShellFaces(int[] faceListSize, EdgeData pEdgeData)
		{
			IntPtr intPtr = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				if (this.SwigDerivedClassHasMethod("generateShellFaces", OdGiGeometrySimplifier.swigMethodTypes58))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellFacesSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, intPtr, pEdgeData);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellFaces__SWIG_1(this.swigCPtr, intPtr, pEdgeData);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void generateShellFaces(int[] faceListSize)
		{
			IntPtr intPtr = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				if (this.SwigDerivedClassHasMethod("generateShellFaces", OdGiGeometrySimplifier.swigMethodTypes59))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellFacesSwigExplicitOdGiGeometrySimplifier__SWIG_2(this.swigCPtr, intPtr);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellFaces__SWIG_2(this.swigCPtr, intPtr);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void shellFaceOut(int[] faceListSize, OdGeVector3d pNormal)
		{
			IntPtr intPtr = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				if (this.SwigDerivedClassHasMethod("shellFaceOut", OdGiGeometrySimplifier.swigMethodTypes60))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_shellFaceOutSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal));
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_shellFaceOut(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal));
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void triangleOut(int[] vertices, OdGeVector3d pNormal)
		{
			if (this.SwigDerivedClassHasMethod("triangleOut", OdGiGeometrySimplifier.swigMethodTypes61))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_triangleOutSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, Helpers.MarshalInt32FixedArray(vertices), OdGeVector3d.getCPtr(pNormal));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_triangleOut(this.swigCPtr, Helpers.MarshalInt32FixedArray(vertices), OdGeVector3d.getCPtr(pNormal));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void generateShellFacets(int[] faceListSize, FaceData pFaceData, int maxFacetSize)
		{
			IntPtr intPtr = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				if (this.SwigDerivedClassHasMethod("generateShellFacets", OdGiGeometrySimplifier.swigMethodTypes62))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellFacetsSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, intPtr, pFaceData, maxFacetSize);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellFacets__SWIG_0(this.swigCPtr, intPtr, pFaceData, maxFacetSize);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void generateShellFacets(int[] faceListSize, FaceData pFaceData)
		{
			IntPtr intPtr = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				if (this.SwigDerivedClassHasMethod("generateShellFacets", OdGiGeometrySimplifier.swigMethodTypes63))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellFacetsSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, intPtr, pFaceData);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellFacets__SWIG_1(this.swigCPtr, intPtr, pFaceData);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void generateShellFacets(int[] faceListSize)
		{
			IntPtr intPtr = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				if (this.SwigDerivedClassHasMethod("generateShellFacets", OdGiGeometrySimplifier.swigMethodTypes64))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellFacetsSwigExplicitOdGiGeometrySimplifier__SWIG_2(this.swigCPtr, intPtr);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_generateShellFacets__SWIG_2(this.swigCPtr, intPtr);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void facetOut(SWIGTYPE_p_OdInt32 faceList, int[] edgeIndices, OdGeVector3d pNormal)
		{
			if (this.SwigDerivedClassHasMethod("facetOut", OdGiGeometrySimplifier.swigMethodTypes65))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_facetOutSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, SWIGTYPE_p_OdInt32.getCPtr(faceList), Helpers.MarshalInt32FixedArray(edgeIndices), OdGeVector3d.getCPtr(pNormal));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_facetOut(this.swigCPtr, SWIGTYPE_p_OdInt32.getCPtr(faceList), Helpers.MarshalInt32FixedArray(edgeIndices), OdGeVector3d.getCPtr(pNormal));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void circleProc(OdGePoint3d center, double radius, OdGeVector3d normal, OdGeVector3d pExtrusion)
		{
			if (this.SwigDerivedClassHasMethod("circleProc", OdGiGeometrySimplifier.swigMethodTypes12))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_circleProcSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(center), radius, OdGeVector3d.getCPtr(normal), OdGeVector3d.getCPtr(pExtrusion));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_circleProc__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(center), radius, OdGeVector3d.getCPtr(normal), OdGeVector3d.getCPtr(pExtrusion));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void circleProc(OdGePoint3d firstPoint, OdGePoint3d secondPoint, OdGePoint3d thirdPoint, OdGeVector3d pExtrusion)
		{
			if (this.SwigDerivedClassHasMethod("circleProc", OdGiGeometrySimplifier.swigMethodTypes13))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_circleProcSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(firstPoint), OdGePoint3d.getCPtr(secondPoint), OdGePoint3d.getCPtr(thirdPoint), OdGeVector3d.getCPtr(pExtrusion));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_circleProc__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(firstPoint), OdGePoint3d.getCPtr(secondPoint), OdGePoint3d.getCPtr(thirdPoint), OdGeVector3d.getCPtr(pExtrusion));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void circularArcProc(OdGePoint3d center, double radius, OdGeVector3d normal, OdGeVector3d startVector, double sweepAngle, OdGiArcType arcType, OdGeVector3d pExtrusion)
		{
			if (this.SwigDerivedClassHasMethod("circularArcProc", OdGiGeometrySimplifier.swigMethodTypes14))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_circularArcProcSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(center), radius, OdGeVector3d.getCPtr(normal), OdGeVector3d.getCPtr(startVector), sweepAngle, (int)arcType, OdGeVector3d.getCPtr(pExtrusion));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_circularArcProc__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(center), radius, OdGeVector3d.getCPtr(normal), OdGeVector3d.getCPtr(startVector), sweepAngle, (int)arcType, OdGeVector3d.getCPtr(pExtrusion));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void circularArcProc(OdGePoint3d firstPoint, OdGePoint3d secondPoint, OdGePoint3d thirdPoint, OdGiArcType arcType, OdGeVector3d pExtrusion)
		{
			if (this.SwigDerivedClassHasMethod("circularArcProc", OdGiGeometrySimplifier.swigMethodTypes15))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_circularArcProcSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(firstPoint), OdGePoint3d.getCPtr(secondPoint), OdGePoint3d.getCPtr(thirdPoint), (int)arcType, OdGeVector3d.getCPtr(pExtrusion));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_circularArcProc__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(firstPoint), OdGePoint3d.getCPtr(secondPoint), OdGePoint3d.getCPtr(thirdPoint), (int)arcType, OdGeVector3d.getCPtr(pExtrusion));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void textProc(OdGePoint3d position, OdGeVector3d u, OdGeVector3d v, string msg, bool raw, OdGiTextStyle pTextStyle, OdGeVector3d pExtrusion)
		{
			if (this.SwigDerivedClassHasMethod("textProc", OdGiGeometrySimplifier.swigMethodTypes21))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_textProcSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), msg, raw, OdGiTextStyle.getCPtr(pTextStyle), OdGeVector3d.getCPtr(pExtrusion));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_textProc(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), msg, raw, OdGiTextStyle.getCPtr(pTextStyle), OdGeVector3d.getCPtr(pExtrusion));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void textProc2(OdGePoint3d position, OdGeVector3d u, OdGeVector3d v, string msg, bool raw, OdGiTextStyle pTextStyle, OdGeVector3d pExtrusion, OdGeExtents3d extentsBox)
		{
			if (this.SwigDerivedClassHasMethod("textProc2", OdGiGeometrySimplifier.swigMethodTypes22))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_textProc2SwigExplicitOdGiGeometrySimplifier(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), msg, raw, OdGiTextStyle.getCPtr(pTextStyle), OdGeVector3d.getCPtr(pExtrusion), OdGeExtents3d.getCPtr(extentsBox));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_textProc2(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), msg, raw, OdGiTextStyle.getCPtr(pTextStyle), OdGeVector3d.getCPtr(pExtrusion), OdGeExtents3d.getCPtr(extentsBox));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void shapeProc(OdGePoint3d position, OdGeVector3d direction, OdGeVector3d upVector, int shapeNumber, OdGiTextStyle pTextStyle, OdGeVector3d pExtrusion)
		{
			if (this.SwigDerivedClassHasMethod("shapeProc", OdGiGeometrySimplifier.swigMethodTypes23))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_shapeProcSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(direction), OdGeVector3d.getCPtr(upVector), shapeNumber, OdGiTextStyle.getCPtr(pTextStyle), OdGeVector3d.getCPtr(pExtrusion));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_shapeProc__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(direction), OdGeVector3d.getCPtr(upVector), shapeNumber, OdGiTextStyle.getCPtr(pTextStyle), OdGeVector3d.getCPtr(pExtrusion));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void shapeProc(OdGePoint3d position, OdGeVector3d direction, OdGeVector3d upVector, int shapeNumber, OdGiTextStyle pTextStyle)
		{
			if (this.SwigDerivedClassHasMethod("shapeProc", OdGiGeometrySimplifier.swigMethodTypes24))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_shapeProcSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(direction), OdGeVector3d.getCPtr(upVector), shapeNumber, OdGiTextStyle.getCPtr(pTextStyle));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_shapeProc__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(direction), OdGeVector3d.getCPtr(upVector), shapeNumber, OdGiTextStyle.getCPtr(pTextStyle));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void nurbsProc(OdGeNurbCurve3d nurbsCurve)
		{
			if (this.SwigDerivedClassHasMethod("nurbsProc", OdGiGeometrySimplifier.swigMethodTypes20))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_nurbsProcSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, OdGeNurbCurve3d.getCPtr(nurbsCurve));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_nurbsProc(this.swigCPtr, OdGeNurbCurve3d.getCPtr(nurbsCurve));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void ellipArcProc(OdGeEllipArc3d ellipArc, OdGePoint3d[] endPointOverrides, OdGiArcType arcType, OdGeVector3d pExtrusion)
		{
			IntPtr intPtr = Helpers.MarshalPointPair(endPointOverrides);
			try
			{
				if (this.SwigDerivedClassHasMethod("ellipArcProc", OdGiGeometrySimplifier.swigMethodTypes16))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_ellipArcProcSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc), intPtr, (int)arcType, OdGeVector3d.getCPtr(pExtrusion));
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_ellipArcProc__SWIG_0(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc), intPtr, (int)arcType, OdGeVector3d.getCPtr(pExtrusion));
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				if (intPtr != IntPtr.Zero)
				{
					Marshal.FreeCoTaskMem(intPtr);
				}
			}
		}

		public virtual void ellipArcProc(OdGeEllipArc3d ellipArc, OdGePoint3d[] endPointOverrides, OdGiArcType arcType)
		{
			IntPtr intPtr = Helpers.MarshalPointPair(endPointOverrides);
			try
			{
				if (this.SwigDerivedClassHasMethod("ellipArcProc", OdGiGeometrySimplifier.swigMethodTypes17))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_ellipArcProcSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc), intPtr, (int)arcType);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_ellipArcProc__SWIG_1(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc), intPtr, (int)arcType);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				if (intPtr != IntPtr.Zero)
				{
					Marshal.FreeCoTaskMem(intPtr);
				}
			}
		}

		public virtual void ellipArcProc(OdGeEllipArc3d ellipArc, OdGePoint3d[] endPointOverrides)
		{
			IntPtr intPtr = Helpers.MarshalPointPair(endPointOverrides);
			try
			{
				if (this.SwigDerivedClassHasMethod("ellipArcProc", OdGiGeometrySimplifier.swigMethodTypes18))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_ellipArcProcSwigExplicitOdGiGeometrySimplifier__SWIG_2(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc), intPtr);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_ellipArcProc__SWIG_2(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc), intPtr);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				if (intPtr != IntPtr.Zero)
				{
					Marshal.FreeCoTaskMem(intPtr);
				}
			}
		}

		public virtual void ellipArcProc(OdGeEllipArc3d ellipArc)
		{
			if (this.SwigDerivedClassHasMethod("ellipArcProc", OdGiGeometrySimplifier.swigMethodTypes19))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_ellipArcProcSwigExplicitOdGiGeometrySimplifier__SWIG_3(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_ellipArcProc__SWIG_3(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual bool ellipArcProc(OdGeEllipArc3d ellipArc, double width)
		{
			bool result = this.SwigDerivedClassHasMethod("ellipArcProc", OdGiGeometrySimplifier.swigMethodTypes66) ? GlobalsPINVOKE.OdGiGeometrySimplifier_ellipArcProcSwigExplicitOdGiGeometrySimplifier__SWIG_4(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc), width) : GlobalsPINVOKE.OdGiGeometrySimplifier_ellipArcProc__SWIG_4(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc), width);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary, bool transparency, double brightness, double contrast, double fade)
		{
			IntPtr intPtr = Helpers.MarshalPoint2dArray(uvBoundary);
			try
			{
				if (this.SwigDerivedClassHasMethod("rasterImageProc", OdGiGeometrySimplifier.swigMethodTypes25))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_rasterImageProcSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr, transparency, brightness, contrast, fade);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_rasterImageProc__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr, transparency, brightness, contrast, fade);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary, bool transparency, double brightness, double contrast)
		{
			IntPtr intPtr = Helpers.MarshalPoint2dArray(uvBoundary);
			try
			{
				if (this.SwigDerivedClassHasMethod("rasterImageProc", OdGiGeometrySimplifier.swigMethodTypes26))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_rasterImageProcSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr, transparency, brightness, contrast);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_rasterImageProc__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr, transparency, brightness, contrast);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary, bool transparency, double brightness)
		{
			IntPtr intPtr = Helpers.MarshalPoint2dArray(uvBoundary);
			try
			{
				if (this.SwigDerivedClassHasMethod("rasterImageProc", OdGiGeometrySimplifier.swigMethodTypes27))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_rasterImageProcSwigExplicitOdGiGeometrySimplifier__SWIG_2(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr, transparency, brightness);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_rasterImageProc__SWIG_2(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr, transparency, brightness);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary, bool transparency)
		{
			IntPtr intPtr = Helpers.MarshalPoint2dArray(uvBoundary);
			try
			{
				if (this.SwigDerivedClassHasMethod("rasterImageProc", OdGiGeometrySimplifier.swigMethodTypes28))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_rasterImageProcSwigExplicitOdGiGeometrySimplifier__SWIG_3(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr, transparency);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_rasterImageProc__SWIG_3(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr, transparency);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void rasterImageProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, OdGePoint2d[] uvBoundary)
		{
			IntPtr intPtr = Helpers.MarshalPoint2dArray(uvBoundary);
			try
			{
				if (this.SwigDerivedClassHasMethod("rasterImageProc", OdGiGeometrySimplifier.swigMethodTypes29))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_rasterImageProcSwigExplicitOdGiGeometrySimplifier__SWIG_4(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_rasterImageProc__SWIG_4(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), intPtr);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void initTexture(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiRasterImage pImage, bool transparency, double brightness, double contrast, double fade)
		{
			if (this.SwigDerivedClassHasMethod("initTexture", OdGiGeometrySimplifier.swigMethodTypes67))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_initTextureSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), transparency, brightness, contrast, fade);
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_initTexture(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiRasterImage.getCPtr(pImage), transparency, brightness, contrast, fade);
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void uninitTexture()
		{
			if (this.SwigDerivedClassHasMethod("uninitTexture", OdGiGeometrySimplifier.swigMethodTypes68))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_uninitTextureSwigExplicitOdGiGeometrySimplifier(this.swigCPtr);
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_uninitTexture(this.swigCPtr);
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void metafileProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiMetafile pMetafile, bool dcAligned, bool allowClipping)
		{
			if (this.SwigDerivedClassHasMethod("metafileProc", OdGiGeometrySimplifier.swigMethodTypes30))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_metafileProcSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiMetafile.getCPtr(pMetafile), dcAligned, allowClipping);
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_metafileProc__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiMetafile.getCPtr(pMetafile), dcAligned, allowClipping);
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void metafileProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiMetafile pMetafile, bool dcAligned)
		{
			if (this.SwigDerivedClassHasMethod("metafileProc", OdGiGeometrySimplifier.swigMethodTypes31))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_metafileProcSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiMetafile.getCPtr(pMetafile), dcAligned);
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_metafileProc__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiMetafile.getCPtr(pMetafile), dcAligned);
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void metafileProc(OdGePoint3d origin, OdGeVector3d u, OdGeVector3d v, OdGiMetafile pMetafile)
		{
			if (this.SwigDerivedClassHasMethod("metafileProc", OdGiGeometrySimplifier.swigMethodTypes32))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_metafileProcSwigExplicitOdGiGeometrySimplifier__SWIG_2(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiMetafile.getCPtr(pMetafile));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_metafileProc__SWIG_2(this.swigCPtr, OdGePoint3d.getCPtr(origin), OdGeVector3d.getCPtr(u), OdGeVector3d.getCPtr(v), OdGiMetafile.getCPtr(pMetafile));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void polypointProc(OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals, OdGeVector3d pExtrusions, IntPtr[] pSubEntMarkers)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				if (this.SwigDerivedClassHasMethod("polypointProc", OdGiGeometrySimplifier.swigMethodTypes42))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polypointProcSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals), OdGeVector3d.getCPtr(pExtrusions), Helpers.MarshalIntPtrFixedArray(pSubEntMarkers));
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polypointProc__SWIG_0(this.swigCPtr, intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals), OdGeVector3d.getCPtr(pExtrusions), Helpers.MarshalIntPtrFixedArray(pSubEntMarkers));
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polypointProc(OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals, OdGeVector3d pExtrusions)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				if (this.SwigDerivedClassHasMethod("polypointProc", OdGiGeometrySimplifier.swigMethodTypes43))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polypointProcSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals), OdGeVector3d.getCPtr(pExtrusions));
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polypointProc__SWIG_1(this.swigCPtr, intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals), OdGeVector3d.getCPtr(pExtrusions));
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polypointProc(OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				if (this.SwigDerivedClassHasMethod("polypointProc", OdGiGeometrySimplifier.swigMethodTypes44))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polypointProcSwigExplicitOdGiGeometrySimplifier__SWIG_2(this.swigCPtr, intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals));
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polypointProc__SWIG_2(this.swigCPtr, intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals));
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void polypointProc(OdGePoint3d[] numPoints, OdCmEntityColor pColors)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				if (this.SwigDerivedClassHasMethod("polypointProc", OdGiGeometrySimplifier.swigMethodTypes45))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polypointProcSwigExplicitOdGiGeometrySimplifier__SWIG_3(this.swigCPtr, intPtr, OdCmEntityColor.getCPtr(pColors));
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_polypointProc__SWIG_3(this.swigCPtr, intPtr, OdCmEntityColor.getCPtr(pColors));
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void rowOfDotsProc(int numPoints, OdGePoint3d startPoint, OdGeVector3d dirToNextPoint)
		{
			if (this.SwigDerivedClassHasMethod("rowOfDotsProc", OdGiGeometrySimplifier.swigMethodTypes46))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_rowOfDotsProcSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, numPoints, OdGePoint3d.getCPtr(startPoint), OdGeVector3d.getCPtr(dirToNextPoint));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_rowOfDotsProc(this.swigCPtr, numPoints, OdGePoint3d.getCPtr(startPoint), OdGeVector3d.getCPtr(dirToNextPoint));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void polylineOut(int numPoints, int[] vertexIndexList)
		{
			if (this.SwigDerivedClassHasMethod("polylineOut", OdGiGeometrySimplifier.swigMethodTypes69))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_polylineOutSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, numPoints, Helpers.MarshalInt32FixedArray(vertexIndexList));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_polylineOut__SWIG_1(this.swigCPtr, numPoints, Helpers.MarshalInt32FixedArray(vertexIndexList));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public void convertMeshToShell(MeshData rows)
		{
			IntPtr intPtr = Helpers.MarshalMeshData(rows);
			try
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_convertMeshToShell(this.swigCPtr, intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public virtual void ttfPolyDrawProc(OdGePoint3d[] numVertices, int[] faceListSize, byte[] pBezierTypes, FaceData pFaceData)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numVertices);
			IntPtr intPtr2 = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				if (this.SwigDerivedClassHasMethod("ttfPolyDrawProc", OdGiGeometrySimplifier.swigMethodTypes39))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_ttfPolyDrawProcSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, intPtr, intPtr2, Teigha.Core.Helpers.MarshalbyteFixedArray(pBezierTypes), pFaceData);
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_ttfPolyDrawProc__SWIG_0(this.swigCPtr, intPtr, intPtr2, Teigha.Core.Helpers.MarshalbyteFixedArray(pBezierTypes), pFaceData);
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
				Marshal.FreeCoTaskMem(intPtr2);
			}
		}

		public virtual void ttfPolyDrawProc(OdGePoint3d[] numVertices, int[] faceListSize, byte[] pBezierTypes)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numVertices);
			IntPtr intPtr2 = Helpers.MarshalInt32FixedArray(faceListSize);
			try
			{
				if (this.SwigDerivedClassHasMethod("ttfPolyDrawProc", OdGiGeometrySimplifier.swigMethodTypes40))
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_ttfPolyDrawProcSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, intPtr, intPtr2, Teigha.Core.Helpers.MarshalbyteFixedArray(pBezierTypes));
				}
				else
				{
					GlobalsPINVOKE.OdGiGeometrySimplifier_ttfPolyDrawProc__SWIG_1(this.swigCPtr, intPtr, intPtr2, Teigha.Core.Helpers.MarshalbyteFixedArray(pBezierTypes));
				}
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
				Marshal.FreeCoTaskMem(intPtr2);
			}
		}

		public virtual void xlineProc2(OdGePoint3d basePoint, OdGeVector3d direction)
		{
			if (this.SwigDerivedClassHasMethod("xlineProc2", OdGiGeometrySimplifier.swigMethodTypes33))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_xlineProc2SwigExplicitOdGiGeometrySimplifier(this.swigCPtr, OdGePoint3d.getCPtr(basePoint), OdGeVector3d.getCPtr(direction));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_xlineProc2(this.swigCPtr, OdGePoint3d.getCPtr(basePoint), OdGeVector3d.getCPtr(direction));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void rayProc2(OdGePoint3d basePoint, OdGeVector3d direction)
		{
			if (this.SwigDerivedClassHasMethod("rayProc2", OdGiGeometrySimplifier.swigMethodTypes34))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_rayProc2SwigExplicitOdGiGeometrySimplifier(this.swigCPtr, OdGePoint3d.getCPtr(basePoint), OdGeVector3d.getCPtr(direction));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_rayProc2(this.swigCPtr, OdGePoint3d.getCPtr(basePoint), OdGeVector3d.getCPtr(direction));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setExtentsProc(OdGePoint3d arg0, bool arg1)
		{
			if (this.SwigDerivedClassHasMethod("setExtentsProc", OdGiGeometrySimplifier.swigMethodTypes35))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_setExtentsProcSwigExplicitOdGiGeometrySimplifier__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(arg0), arg1);
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_setExtentsProc__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(arg0), arg1);
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setExtentsProc(OdGePoint3d arg0)
		{
			if (this.SwigDerivedClassHasMethod("setExtentsProc", OdGiGeometrySimplifier.swigMethodTypes36))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_setExtentsProcSwigExplicitOdGiGeometrySimplifier__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(arg0));
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_setExtentsProc__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(arg0));
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual int ttfCharProcFlags()
		{
			int result = this.SwigDerivedClassHasMethod("ttfCharProcFlags", OdGiGeometrySimplifier.swigMethodTypes37) ? GlobalsPINVOKE.OdGiGeometrySimplifier_ttfCharProcFlagsSwigExplicitOdGiGeometrySimplifier(this.swigCPtr) : GlobalsPINVOKE.OdGiGeometrySimplifier_ttfCharProcFlags(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual bool ttfCharProc(char arg0, OdGePoint3d arg1, OdGeBoundBlock3d arg2)
		{
			bool result = this.SwigDerivedClassHasMethod("ttfCharProc", OdGiGeometrySimplifier.swigMethodTypes38) ? GlobalsPINVOKE.OdGiGeometrySimplifier_ttfCharProcSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, arg0, OdGePoint3d.getCPtr(arg1), OdGeBoundBlock3d.getCPtr(arg2)) : GlobalsPINVOKE.OdGiGeometrySimplifier_ttfCharProc(this.swigCPtr, arg0, OdGePoint3d.getCPtr(arg1), OdGeBoundBlock3d.getCPtr(arg2));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual void conveyorBoundaryInfoProc(OdGeBoundBlock3d arg0, out uint arg1)
		{
			if (this.SwigDerivedClassHasMethod("conveyorBoundaryInfoProc", OdGiGeometrySimplifier.swigMethodTypes41))
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_conveyorBoundaryInfoProcSwigExplicitOdGiGeometrySimplifier(this.swigCPtr, OdGeBoundBlock3d.getCPtr(arg0), out arg1);
			}
			else
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_conveyorBoundaryInfoProc(this.swigCPtr, OdGeBoundBlock3d.getCPtr(arg0), out arg1);
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals, OdGeVector3d pExtrusions, IntPtr[] pSubEntMarkers)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_polypointProc2__SWIG_0(this.swigCPtr, pContext.GetCPtr(), intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals), OdGeVector3d.getCPtr(pExtrusions), Helpers.MarshalIntPtrFixedArray(pSubEntMarkers));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals, OdGeVector3d pExtrusions)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_polypointProc2__SWIG_1(this.swigCPtr, pContext.GetCPtr(), intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals), OdGeVector3d.getCPtr(pExtrusions));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints, OdCmEntityColor pColors, OdGeVector3d pNormals)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_polypointProc2__SWIG_2(this.swigCPtr, pContext.GetCPtr(), intPtr, OdCmEntityColor.getCPtr(pColors), OdGeVector3d.getCPtr(pNormals));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints, OdCmEntityColor pColors)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_polypointProc2__SWIG_3(this.swigCPtr, pContext.GetCPtr(), intPtr, OdCmEntityColor.getCPtr(pColors));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public void polypointProc2(OdGiConveyorContext pContext, OdGePoint3d[] numPoints)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numPoints);
			try
			{
				GlobalsPINVOKE.OdGiGeometrySimplifier_polypointProc2__SWIG_4(this.swigCPtr, pContext.GetCPtr(), intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public void rowOfDotsProc2(int numPoints, OdGePoint3d startPoint, OdGeVector3d dirToNextPoint)
		{
			GlobalsPINVOKE.OdGiGeometrySimplifier_rowOfDotsProc2(this.swigCPtr, numPoints, OdGePoint3d.getCPtr(startPoint), OdGeVector3d.getCPtr(dirToNextPoint));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		private void SwigDirectorConnect()
		{
			if (this.SwigDerivedClassHasMethod("plineProc", OdGiGeometrySimplifier.swigMethodTypes0))
			{
				this.swigDelegate0 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_0(this.SwigDirectorplineProc__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("plineProc", OdGiGeometrySimplifier.swigMethodTypes1))
			{
				this.swigDelegate1 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_1(this.SwigDirectorplineProc__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("plineProc", OdGiGeometrySimplifier.swigMethodTypes2))
			{
				this.swigDelegate2 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_2(this.SwigDirectorplineProc__SWIG_2);
			}
			if (this.SwigDerivedClassHasMethod("plineProc", OdGiGeometrySimplifier.swigMethodTypes3))
			{
				this.swigDelegate3 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_3(this.SwigDirectorplineProc__SWIG_3);
			}
			if (this.SwigDerivedClassHasMethod("polylineProc", OdGiGeometrySimplifier.swigMethodTypes4))
			{
				this.swigDelegate4 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_4(this.SwigDirectorpolylineProc);
			}
			if (this.SwigDerivedClassHasMethod("polygonProc", OdGiGeometrySimplifier.swigMethodTypes5))
			{
				this.swigDelegate5 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_5(this.SwigDirectorpolygonProc__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("polygonProc", OdGiGeometrySimplifier.swigMethodTypes6))
			{
				this.swigDelegate6 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_6(this.SwigDirectorpolygonProc__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("polygonProc", OdGiGeometrySimplifier.swigMethodTypes7))
			{
				this.swigDelegate7 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_7(this.SwigDirectorpolygonProc__SWIG_2);
			}
			if (this.SwigDerivedClassHasMethod("xlineProc", OdGiGeometrySimplifier.swigMethodTypes8))
			{
				this.swigDelegate8 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_8(this.SwigDirectorxlineProc);
			}
			if (this.SwigDerivedClassHasMethod("rayProc", OdGiGeometrySimplifier.swigMethodTypes9))
			{
				this.swigDelegate9 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_9(this.SwigDirectorrayProc);
			}
			if (this.SwigDerivedClassHasMethod("meshProc", OdGiGeometrySimplifier.swigMethodTypes10))
			{
				this.swigDelegate10 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_10(this.SwigDirectormeshProc);
			}
			if (this.SwigDerivedClassHasMethod("shellProc", OdGiGeometrySimplifier.swigMethodTypes11))
			{
				this.swigDelegate11 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_11(this.SwigDirectorshellProc);
			}
			if (this.SwigDerivedClassHasMethod("circleProc", OdGiGeometrySimplifier.swigMethodTypes12))
			{
				this.swigDelegate12 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_12(this.SwigDirectorcircleProc__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("circleProc", OdGiGeometrySimplifier.swigMethodTypes13))
			{
				this.swigDelegate13 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_13(this.SwigDirectorcircleProc__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("circularArcProc", OdGiGeometrySimplifier.swigMethodTypes14))
			{
				this.swigDelegate14 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_14(this.SwigDirectorcircularArcProc__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("circularArcProc", OdGiGeometrySimplifier.swigMethodTypes15))
			{
				this.swigDelegate15 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_15(this.SwigDirectorcircularArcProc__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("ellipArcProc", OdGiGeometrySimplifier.swigMethodTypes16))
			{
				this.swigDelegate16 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_16(this.SwigDirectorellipArcProc__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("ellipArcProc", OdGiGeometrySimplifier.swigMethodTypes17))
			{
				this.swigDelegate17 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_17(this.SwigDirectorellipArcProc__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("ellipArcProc", OdGiGeometrySimplifier.swigMethodTypes18))
			{
				this.swigDelegate18 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_18(this.SwigDirectorellipArcProc__SWIG_2);
			}
			if (this.SwigDerivedClassHasMethod("ellipArcProc", OdGiGeometrySimplifier.swigMethodTypes19))
			{
				this.swigDelegate19 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_19(this.SwigDirectorellipArcProc__SWIG_3);
			}
			if (this.SwigDerivedClassHasMethod("nurbsProc", OdGiGeometrySimplifier.swigMethodTypes20))
			{
				this.swigDelegate20 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_20(this.SwigDirectornurbsProc);
			}
			if (this.SwigDerivedClassHasMethod("textProc", OdGiGeometrySimplifier.swigMethodTypes21))
			{
				this.swigDelegate21 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_21(this.SwigDirectortextProc);
			}
			if (this.SwigDerivedClassHasMethod("textProc2", OdGiGeometrySimplifier.swigMethodTypes22))
			{
				this.swigDelegate22 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_22(this.SwigDirectortextProc2);
			}
			if (this.SwigDerivedClassHasMethod("shapeProc", OdGiGeometrySimplifier.swigMethodTypes23))
			{
				this.swigDelegate23 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_23(this.SwigDirectorshapeProc__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("shapeProc", OdGiGeometrySimplifier.swigMethodTypes24))
			{
				this.swigDelegate24 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_24(this.SwigDirectorshapeProc__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("rasterImageProc", OdGiGeometrySimplifier.swigMethodTypes25))
			{
				this.swigDelegate25 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_25(this.SwigDirectorrasterImageProc__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("rasterImageProc", OdGiGeometrySimplifier.swigMethodTypes26))
			{
				this.swigDelegate26 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_26(this.SwigDirectorrasterImageProc__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("rasterImageProc", OdGiGeometrySimplifier.swigMethodTypes27))
			{
				this.swigDelegate27 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_27(this.SwigDirectorrasterImageProc__SWIG_2);
			}
			if (this.SwigDerivedClassHasMethod("rasterImageProc", OdGiGeometrySimplifier.swigMethodTypes28))
			{
				this.swigDelegate28 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_28(this.SwigDirectorrasterImageProc__SWIG_3);
			}
			if (this.SwigDerivedClassHasMethod("rasterImageProc", OdGiGeometrySimplifier.swigMethodTypes29))
			{
				this.swigDelegate29 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_29(this.SwigDirectorrasterImageProc__SWIG_4);
			}
			if (this.SwigDerivedClassHasMethod("metafileProc", OdGiGeometrySimplifier.swigMethodTypes30))
			{
				this.swigDelegate30 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_30(this.SwigDirectormetafileProc__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("metafileProc", OdGiGeometrySimplifier.swigMethodTypes31))
			{
				this.swigDelegate31 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_31(this.SwigDirectormetafileProc__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("metafileProc", OdGiGeometrySimplifier.swigMethodTypes32))
			{
				this.swigDelegate32 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_32(this.SwigDirectormetafileProc__SWIG_2);
			}
			if (this.SwigDerivedClassHasMethod("xlineProc2", OdGiGeometrySimplifier.swigMethodTypes33))
			{
				this.swigDelegate33 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_33(this.SwigDirectorxlineProc2);
			}
			if (this.SwigDerivedClassHasMethod("rayProc2", OdGiGeometrySimplifier.swigMethodTypes34))
			{
				this.swigDelegate34 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_34(this.SwigDirectorrayProc2);
			}
			if (this.SwigDerivedClassHasMethod("setExtentsProc", OdGiGeometrySimplifier.swigMethodTypes35))
			{
				this.swigDelegate35 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_35(this.SwigDirectorsetExtentsProc__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("setExtentsProc", OdGiGeometrySimplifier.swigMethodTypes36))
			{
				this.swigDelegate36 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_36(this.SwigDirectorsetExtentsProc__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("ttfCharProcFlags", OdGiGeometrySimplifier.swigMethodTypes37))
			{
				this.swigDelegate37 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_37(this.SwigDirectorttfCharProcFlags);
			}
			if (this.SwigDerivedClassHasMethod("ttfCharProc", OdGiGeometrySimplifier.swigMethodTypes38))
			{
				this.swigDelegate38 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_38(this.SwigDirectorttfCharProc);
			}
			if (this.SwigDerivedClassHasMethod("ttfPolyDrawProc", OdGiGeometrySimplifier.swigMethodTypes39))
			{
				this.swigDelegate39 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_39(this.SwigDirectorttfPolyDrawProc__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("ttfPolyDrawProc", OdGiGeometrySimplifier.swigMethodTypes40))
			{
				this.swigDelegate40 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_40(this.SwigDirectorttfPolyDrawProc__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("conveyorBoundaryInfoProc", OdGiGeometrySimplifier.swigMethodTypes41))
			{
				this.swigDelegate41 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_41(this.SwigDirectorconveyorBoundaryInfoProc);
			}
			if (this.SwigDerivedClassHasMethod("polypointProc", OdGiGeometrySimplifier.swigMethodTypes42))
			{
				this.swigDelegate42 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_42(this.SwigDirectorpolypointProc__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("polypointProc", OdGiGeometrySimplifier.swigMethodTypes43))
			{
				this.swigDelegate43 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_43(this.SwigDirectorpolypointProc__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("polypointProc", OdGiGeometrySimplifier.swigMethodTypes44))
			{
				this.swigDelegate44 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_44(this.SwigDirectorpolypointProc__SWIG_2);
			}
			if (this.SwigDerivedClassHasMethod("polypointProc", OdGiGeometrySimplifier.swigMethodTypes45))
			{
				this.swigDelegate45 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_45(this.SwigDirectorpolypointProc__SWIG_3);
			}
			if (this.SwigDerivedClassHasMethod("rowOfDotsProc", OdGiGeometrySimplifier.swigMethodTypes46))
			{
				this.swigDelegate46 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_46(this.SwigDirectorrowOfDotsProc);
			}
			if (this.SwigDerivedClassHasMethod("plineArcSegmentsAsArcProc", OdGiGeometrySimplifier.swigMethodTypes47))
			{
				this.swigDelegate47 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_47(this.SwigDirectorplineArcSegmentsAsArcProc);
			}
			if (this.SwigDerivedClassHasMethod("polylineOut", OdGiGeometrySimplifier.swigMethodTypes48))
			{
				this.swigDelegate48 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_48(this.SwigDirectorpolylineOut__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("polygonOut", OdGiGeometrySimplifier.swigMethodTypes49))
			{
				this.swigDelegate49 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_49(this.SwigDirectorpolygonOut__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("polygonOut", OdGiGeometrySimplifier.swigMethodTypes50))
			{
				this.swigDelegate50 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_50(this.SwigDirectorpolygonOut__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("generateMeshWires", OdGiGeometrySimplifier.swigMethodTypes51))
			{
				this.swigDelegate51 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_51(this.SwigDirectorgenerateMeshWires);
			}
			if (this.SwigDerivedClassHasMethod("generateMeshFaces", OdGiGeometrySimplifier.swigMethodTypes52))
			{
				this.swigDelegate52 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_52(this.SwigDirectorgenerateMeshFaces);
			}
			if (this.SwigDerivedClassHasMethod("meshFaceOut", OdGiGeometrySimplifier.swigMethodTypes53))
			{
				this.swigDelegate53 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_53(this.SwigDirectormeshFaceOut);
			}
			if (this.SwigDerivedClassHasMethod("generateShellWires", OdGiGeometrySimplifier.swigMethodTypes54))
			{
				this.swigDelegate54 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_54(this.SwigDirectorgenerateShellWires__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("generateShellWires", OdGiGeometrySimplifier.swigMethodTypes55))
			{
				this.swigDelegate55 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_55(this.SwigDirectorgenerateShellWires__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("generateShellWires", OdGiGeometrySimplifier.swigMethodTypes56))
			{
				this.swigDelegate56 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_56(this.SwigDirectorgenerateShellWires__SWIG_2);
			}
			if (this.SwigDerivedClassHasMethod("generateShellFaces", OdGiGeometrySimplifier.swigMethodTypes57))
			{
				this.swigDelegate57 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_57(this.SwigDirectorgenerateShellFaces__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("generateShellFaces", OdGiGeometrySimplifier.swigMethodTypes58))
			{
				this.swigDelegate58 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_58(this.SwigDirectorgenerateShellFaces__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("generateShellFaces", OdGiGeometrySimplifier.swigMethodTypes59))
			{
				this.swigDelegate59 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_59(this.SwigDirectorgenerateShellFaces__SWIG_2);
			}
			if (this.SwigDerivedClassHasMethod("shellFaceOut", OdGiGeometrySimplifier.swigMethodTypes60))
			{
				this.swigDelegate60 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_60(this.SwigDirectorshellFaceOut);
			}
			if (this.SwigDerivedClassHasMethod("triangleOut", OdGiGeometrySimplifier.swigMethodTypes61))
			{
				this.swigDelegate61 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_61(this.SwigDirectortriangleOut);
			}
			if (this.SwigDerivedClassHasMethod("generateShellFacets", OdGiGeometrySimplifier.swigMethodTypes62))
			{
				this.swigDelegate62 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_62(this.SwigDirectorgenerateShellFacets__SWIG_0);
			}
			if (this.SwigDerivedClassHasMethod("generateShellFacets", OdGiGeometrySimplifier.swigMethodTypes63))
			{
				this.swigDelegate63 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_63(this.SwigDirectorgenerateShellFacets__SWIG_1);
			}
			if (this.SwigDerivedClassHasMethod("generateShellFacets", OdGiGeometrySimplifier.swigMethodTypes64))
			{
				this.swigDelegate64 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_64(this.SwigDirectorgenerateShellFacets__SWIG_2);
			}
			if (this.SwigDerivedClassHasMethod("facetOut", OdGiGeometrySimplifier.swigMethodTypes65))
			{
				this.swigDelegate65 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_65(this.SwigDirectorfacetOut);
			}
			if (this.SwigDerivedClassHasMethod("ellipArcProc", OdGiGeometrySimplifier.swigMethodTypes66))
			{
				this.swigDelegate66 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_66(this.SwigDirectorellipArcProc__SWIG_4);
			}
			if (this.SwigDerivedClassHasMethod("initTexture", OdGiGeometrySimplifier.swigMethodTypes67))
			{
				this.swigDelegate67 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_67(this.SwigDirectorinitTexture);
			}
			if (this.SwigDerivedClassHasMethod("uninitTexture", OdGiGeometrySimplifier.swigMethodTypes68))
			{
				this.swigDelegate68 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_68(this.SwigDirectoruninitTexture);
			}
			if (this.SwigDerivedClassHasMethod("polylineOut", OdGiGeometrySimplifier.swigMethodTypes69))
			{
				this.swigDelegate69 = new OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_69(this.SwigDirectorpolylineOut__SWIG_1);
			}
			GlobalsPINVOKE.OdGiGeometrySimplifier_director_connect(this.swigCPtr, this.swigDelegate0, this.swigDelegate1, this.swigDelegate2, this.swigDelegate3, this.swigDelegate4, this.swigDelegate5, this.swigDelegate6, this.swigDelegate7, this.swigDelegate8, this.swigDelegate9, this.swigDelegate10, this.swigDelegate11, this.swigDelegate12, this.swigDelegate13, this.swigDelegate14, this.swigDelegate15, this.swigDelegate16, this.swigDelegate17, this.swigDelegate18, this.swigDelegate19, this.swigDelegate20, this.swigDelegate21, this.swigDelegate22, this.swigDelegate23, this.swigDelegate24, this.swigDelegate25, this.swigDelegate26, this.swigDelegate27, this.swigDelegate28, this.swigDelegate29, this.swigDelegate30, this.swigDelegate31, this.swigDelegate32, this.swigDelegate33, this.swigDelegate34, this.swigDelegate35, this.swigDelegate36, this.swigDelegate37, this.swigDelegate38, this.swigDelegate39, this.swigDelegate40, this.swigDelegate41, this.swigDelegate42, this.swigDelegate43, this.swigDelegate44, this.swigDelegate45, this.swigDelegate46, this.swigDelegate47, this.swigDelegate48, this.swigDelegate49, this.swigDelegate50, this.swigDelegate51, this.swigDelegate52, this.swigDelegate53, this.swigDelegate54, this.swigDelegate55, this.swigDelegate56, this.swigDelegate57, this.swigDelegate58, this.swigDelegate59, this.swigDelegate60, this.swigDelegate61, this.swigDelegate62, this.swigDelegate63, this.swigDelegate64, this.swigDelegate65, this.swigDelegate66, this.swigDelegate67, this.swigDelegate68, this.swigDelegate69);
		}

		private bool SwigDerivedClassHasMethod(string methodName, Type[] methodTypes)
		{
			MethodInfo method = base.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, methodTypes, null);
			return method.DeclaringType.IsSubclassOf(typeof(OdGiGeometrySimplifier));
		}

		private void SwigDirectorplineProc__SWIG_0(IntPtr polyline, IntPtr pXfm, uint fromIndex, uint numSegs)
		{
			this.plineProc((OdGiPolyline)Teigha.Core.Helpers.odrxCreateObjectInternal(polyline, false), (pXfm == IntPtr.Zero) ? null : new OdGeMatrix3d(pXfm, false), fromIndex, numSegs);
		}

		private void SwigDirectorplineProc__SWIG_1(IntPtr polyline, IntPtr pXfm, uint fromIndex)
		{
			this.plineProc((OdGiPolyline)Teigha.Core.Helpers.odrxCreateObjectInternal(polyline, false), (pXfm == IntPtr.Zero) ? null : new OdGeMatrix3d(pXfm, false), fromIndex);
		}

		private void SwigDirectorplineProc__SWIG_2(IntPtr polyline, IntPtr pXfm)
		{
			this.plineProc((OdGiPolyline)Teigha.Core.Helpers.odrxCreateObjectInternal(polyline, false), (pXfm == IntPtr.Zero) ? null : new OdGeMatrix3d(pXfm, false));
		}

		private void SwigDirectorplineProc__SWIG_3(IntPtr polyline)
		{
			this.plineProc((OdGiPolyline)Teigha.Core.Helpers.odrxCreateObjectInternal(polyline, false));
		}

		private void SwigDirectorpolylineProc(IntPtr numPoints, IntPtr pNormal, IntPtr pExtrusion, IntPtr baseSubEntMarker)
		{
			this.polylineProc(Helpers.UnMarshalPoint3dArray(numPoints), (pNormal == IntPtr.Zero) ? null : new OdGeVector3d(pNormal, false), (pExtrusion == IntPtr.Zero) ? null : new OdGeVector3d(pExtrusion, false), baseSubEntMarker);
		}

		private void SwigDirectorpolygonProc__SWIG_0(IntPtr numPoints, IntPtr pNormal, IntPtr pExtrusion)
		{
			this.polygonProc(Helpers.UnMarshalPoint3dArray(numPoints), (pNormal == IntPtr.Zero) ? null : new OdGeVector3d(pNormal, false), (pExtrusion == IntPtr.Zero) ? null : new OdGeVector3d(pExtrusion, false));
		}

		private void SwigDirectorpolygonProc__SWIG_1(IntPtr numPoints, IntPtr pNormal)
		{
			this.polygonProc(Helpers.UnMarshalPoint3dArray(numPoints), (pNormal == IntPtr.Zero) ? null : new OdGeVector3d(pNormal, false));
		}

		private void SwigDirectorpolygonProc__SWIG_2(IntPtr numPoints)
		{
			this.polygonProc(Helpers.UnMarshalPoint3dArray(numPoints));
		}

		private void SwigDirectorxlineProc(IntPtr firstPoint, IntPtr secondPoint)
		{
			this.xlineProc(new OdGePoint3d(firstPoint, false), new OdGePoint3d(secondPoint, false));
		}

		private void SwigDirectorrayProc(IntPtr basePoint, IntPtr throughPoint)
		{
			this.rayProc(new OdGePoint3d(basePoint, false), new OdGePoint3d(throughPoint, false));
		}

		private void SwigDirectormeshProc(IntPtr numRows)
		{
			this.meshProc(Helpers.UnMarshalMeshData(numRows));
		}

		private void SwigDirectorshellProc(IntPtr numVertices)
		{
			this.shellProc(Helpers.UnMarshalShellData(numVertices));
		}

		private void SwigDirectorcircleProc__SWIG_0(IntPtr center, double radius, IntPtr normal, IntPtr pExtrusion)
		{
			this.circleProc(new OdGePoint3d(center, false), radius, new OdGeVector3d(normal, false), (pExtrusion == IntPtr.Zero) ? null : new OdGeVector3d(pExtrusion, false));
		}

		private void SwigDirectorcircleProc__SWIG_1(IntPtr firstPoint, IntPtr secondPoint, IntPtr thirdPoint, IntPtr pExtrusion)
		{
			this.circleProc(new OdGePoint3d(firstPoint, false), new OdGePoint3d(secondPoint, false), new OdGePoint3d(thirdPoint, false), (pExtrusion == IntPtr.Zero) ? null : new OdGeVector3d(pExtrusion, false));
		}

		private void SwigDirectorcircularArcProc__SWIG_0(IntPtr center, double radius, IntPtr normal, IntPtr startVector, double sweepAngle, int arcType, IntPtr pExtrusion)
		{
			this.circularArcProc(new OdGePoint3d(center, false), radius, new OdGeVector3d(normal, false), new OdGeVector3d(startVector, false), sweepAngle, (OdGiArcType)arcType, (pExtrusion == IntPtr.Zero) ? null : new OdGeVector3d(pExtrusion, false));
		}

		private void SwigDirectorcircularArcProc__SWIG_1(IntPtr firstPoint, IntPtr secondPoint, IntPtr thirdPoint, int arcType, IntPtr pExtrusion)
		{
			this.circularArcProc(new OdGePoint3d(firstPoint, false), new OdGePoint3d(secondPoint, false), new OdGePoint3d(thirdPoint, false), (OdGiArcType)arcType, (pExtrusion == IntPtr.Zero) ? null : new OdGeVector3d(pExtrusion, false));
		}

		private void SwigDirectorellipArcProc__SWIG_0(IntPtr ellipArc, IntPtr endPointOverrides, int arcType, IntPtr pExtrusion)
		{
			this.ellipArcProc(new OdGeEllipArc3d(ellipArc, false), Helpers.UnMarshalPointPair(endPointOverrides), (OdGiArcType)arcType, (pExtrusion == IntPtr.Zero) ? null : new OdGeVector3d(pExtrusion, false));
		}

		private void SwigDirectorellipArcProc__SWIG_1(IntPtr ellipArc, IntPtr endPointOverrides, int arcType)
		{
			this.ellipArcProc(new OdGeEllipArc3d(ellipArc, false), Helpers.UnMarshalPointPair(endPointOverrides), (OdGiArcType)arcType);
		}

		private void SwigDirectorellipArcProc__SWIG_2(IntPtr ellipArc, IntPtr endPointOverrides)
		{
			this.ellipArcProc(new OdGeEllipArc3d(ellipArc, false), Helpers.UnMarshalPointPair(endPointOverrides));
		}

		private void SwigDirectorellipArcProc__SWIG_3(IntPtr ellipArc)
		{
			this.ellipArcProc(new OdGeEllipArc3d(ellipArc, false));
		}

		private void SwigDirectornurbsProc(IntPtr nurbsCurve)
		{
			this.nurbsProc(new OdGeNurbCurve3d(nurbsCurve, false));
		}

		private void SwigDirectortextProc(IntPtr position, IntPtr u, IntPtr v, [MarshalAs(UnmanagedType.LPWStr)] string msg, bool raw, IntPtr pTextStyle, IntPtr pExtrusion)
		{
			this.textProc(new OdGePoint3d(position, false), new OdGeVector3d(u, false), new OdGeVector3d(v, false), msg, raw, (pTextStyle == IntPtr.Zero) ? null : new OdGiTextStyle(pTextStyle, false), (pExtrusion == IntPtr.Zero) ? null : new OdGeVector3d(pExtrusion, false));
		}

		private void SwigDirectortextProc2(IntPtr position, IntPtr u, IntPtr v, [MarshalAs(UnmanagedType.LPWStr)] string msg, bool raw, IntPtr pTextStyle, IntPtr pExtrusion, IntPtr extentsBox)
		{
			this.textProc2(new OdGePoint3d(position, false), new OdGeVector3d(u, false), new OdGeVector3d(v, false), msg, raw, (pTextStyle == IntPtr.Zero) ? null : new OdGiTextStyle(pTextStyle, false), (pExtrusion == IntPtr.Zero) ? null : new OdGeVector3d(pExtrusion, false), (extentsBox == IntPtr.Zero) ? null : new OdGeExtents3d(extentsBox, false));
		}

		private void SwigDirectorshapeProc__SWIG_0(IntPtr position, IntPtr direction, IntPtr upVector, int shapeNumber, IntPtr pTextStyle, IntPtr pExtrusion)
		{
			this.shapeProc(new OdGePoint3d(position, false), new OdGeVector3d(direction, false), new OdGeVector3d(upVector, false), shapeNumber, (pTextStyle == IntPtr.Zero) ? null : new OdGiTextStyle(pTextStyle, false), (pExtrusion == IntPtr.Zero) ? null : new OdGeVector3d(pExtrusion, false));
		}

		private void SwigDirectorshapeProc__SWIG_1(IntPtr position, IntPtr direction, IntPtr upVector, int shapeNumber, IntPtr pTextStyle)
		{
			this.shapeProc(new OdGePoint3d(position, false), new OdGeVector3d(direction, false), new OdGeVector3d(upVector, false), shapeNumber, (pTextStyle == IntPtr.Zero) ? null : new OdGiTextStyle(pTextStyle, false));
		}

		private void SwigDirectorrasterImageProc__SWIG_0(IntPtr origin, IntPtr u, IntPtr v, IntPtr pImage, IntPtr uvBoundary, bool transparency, double brightness, double contrast, double fade)
		{
			this.rasterImageProc(new OdGePoint3d(origin, false), new OdGeVector3d(u, false), new OdGeVector3d(v, false), (OdGiRasterImage)Teigha.Core.Helpers.odrxCreateObjectInternal(pImage, false), Helpers.UnMarshalPoint2dArray(uvBoundary), transparency, brightness, contrast, fade);
		}

		private void SwigDirectorrasterImageProc__SWIG_1(IntPtr origin, IntPtr u, IntPtr v, IntPtr pImage, IntPtr uvBoundary, bool transparency, double brightness, double contrast)
		{
			this.rasterImageProc(new OdGePoint3d(origin, false), new OdGeVector3d(u, false), new OdGeVector3d(v, false), (OdGiRasterImage)Teigha.Core.Helpers.odrxCreateObjectInternal(pImage, false), Helpers.UnMarshalPoint2dArray(uvBoundary), transparency, brightness, contrast);
		}

		private void SwigDirectorrasterImageProc__SWIG_2(IntPtr origin, IntPtr u, IntPtr v, IntPtr pImage, IntPtr uvBoundary, bool transparency, double brightness)
		{
			this.rasterImageProc(new OdGePoint3d(origin, false), new OdGeVector3d(u, false), new OdGeVector3d(v, false), (OdGiRasterImage)Teigha.Core.Helpers.odrxCreateObjectInternal(pImage, false), Helpers.UnMarshalPoint2dArray(uvBoundary), transparency, brightness);
		}

		private void SwigDirectorrasterImageProc__SWIG_3(IntPtr origin, IntPtr u, IntPtr v, IntPtr pImage, IntPtr uvBoundary, bool transparency)
		{
			this.rasterImageProc(new OdGePoint3d(origin, false), new OdGeVector3d(u, false), new OdGeVector3d(v, false), (OdGiRasterImage)Teigha.Core.Helpers.odrxCreateObjectInternal(pImage, false), Helpers.UnMarshalPoint2dArray(uvBoundary), transparency);
		}

		private void SwigDirectorrasterImageProc__SWIG_4(IntPtr origin, IntPtr u, IntPtr v, IntPtr pImage, IntPtr uvBoundary)
		{
			this.rasterImageProc(new OdGePoint3d(origin, false), new OdGeVector3d(u, false), new OdGeVector3d(v, false), (OdGiRasterImage)Teigha.Core.Helpers.odrxCreateObjectInternal(pImage, false), Helpers.UnMarshalPoint2dArray(uvBoundary));
		}

		private void SwigDirectormetafileProc__SWIG_0(IntPtr origin, IntPtr u, IntPtr v, IntPtr pMetafile, bool dcAligned, bool allowClipping)
		{
			this.metafileProc(new OdGePoint3d(origin, false), new OdGeVector3d(u, false), new OdGeVector3d(v, false), (OdGiMetafile)Teigha.Core.Helpers.odrxCreateObjectInternal(pMetafile, false), dcAligned, allowClipping);
		}

		private void SwigDirectormetafileProc__SWIG_1(IntPtr origin, IntPtr u, IntPtr v, IntPtr pMetafile, bool dcAligned)
		{
			this.metafileProc(new OdGePoint3d(origin, false), new OdGeVector3d(u, false), new OdGeVector3d(v, false), (OdGiMetafile)Teigha.Core.Helpers.odrxCreateObjectInternal(pMetafile, false), dcAligned);
		}

		private void SwigDirectormetafileProc__SWIG_2(IntPtr origin, IntPtr u, IntPtr v, IntPtr pMetafile)
		{
			this.metafileProc(new OdGePoint3d(origin, false), new OdGeVector3d(u, false), new OdGeVector3d(v, false), (OdGiMetafile)Teigha.Core.Helpers.odrxCreateObjectInternal(pMetafile, false));
		}

		private void SwigDirectorxlineProc2(IntPtr basePoint, IntPtr direction)
		{
			this.xlineProc2(new OdGePoint3d(basePoint, false), new OdGeVector3d(direction, false));
		}

		private void SwigDirectorrayProc2(IntPtr basePoint, IntPtr direction)
		{
			this.rayProc2(new OdGePoint3d(basePoint, false), new OdGeVector3d(direction, false));
		}

		private void SwigDirectorsetExtentsProc__SWIG_0(IntPtr arg0, bool arg1)
		{
			this.setExtentsProc((arg0 == IntPtr.Zero) ? null : new OdGePoint3d(arg0, false), arg1);
		}

		private void SwigDirectorsetExtentsProc__SWIG_1(IntPtr arg0)
		{
			this.setExtentsProc((arg0 == IntPtr.Zero) ? null : new OdGePoint3d(arg0, false));
		}

		private int SwigDirectorttfCharProcFlags()
		{
			return this.ttfCharProcFlags();
		}

		private bool SwigDirectorttfCharProc(char arg0, IntPtr arg1, IntPtr arg2)
		{
			return this.ttfCharProc(arg0, new OdGePoint3d(arg1, false), (arg2 == IntPtr.Zero) ? null : new OdGeBoundBlock3d(arg2, false));
		}

		private void SwigDirectorttfPolyDrawProc__SWIG_0(IntPtr numVertices, IntPtr faceListSize, IntPtr pBezierTypes, FaceData pFaceData)
		{
			this.ttfPolyDrawProc(Helpers.UnMarshalPoint3dArray(numVertices), Helpers.UnMarshalInt32FixedArray(faceListSize), Teigha.Core.Helpers.UnMarshalbyteFixedArray(pBezierTypes), pFaceData);
		}

		private void SwigDirectorttfPolyDrawProc__SWIG_1(IntPtr numVertices, IntPtr faceListSize, IntPtr pBezierTypes)
		{
			this.ttfPolyDrawProc(Helpers.UnMarshalPoint3dArray(numVertices), Helpers.UnMarshalInt32FixedArray(faceListSize), Teigha.Core.Helpers.UnMarshalbyteFixedArray(pBezierTypes));
		}

		private void SwigDirectorconveyorBoundaryInfoProc(IntPtr arg0, uint arg1)
		{
			this.conveyorBoundaryInfoProc(new OdGeBoundBlock3d(arg0, false), out arg1);
		}

		private void SwigDirectorpolypointProc__SWIG_0(IntPtr numPoints, IntPtr pColors, IntPtr pNormals, IntPtr pExtrusions, IntPtr pSubEntMarkers)
		{
			this.polypointProc(Helpers.UnMarshalPoint3dArray(numPoints), (pColors == IntPtr.Zero) ? null : new OdCmEntityColor(pColors, false), (pNormals == IntPtr.Zero) ? null : new OdGeVector3d(pNormals, false), (pExtrusions == IntPtr.Zero) ? null : new OdGeVector3d(pExtrusions, false), Helpers.UnMarshalIntPtrFixedArray(pSubEntMarkers));
		}

		private void SwigDirectorpolypointProc__SWIG_1(IntPtr numPoints, IntPtr pColors, IntPtr pNormals, IntPtr pExtrusions)
		{
			this.polypointProc(Helpers.UnMarshalPoint3dArray(numPoints), (pColors == IntPtr.Zero) ? null : new OdCmEntityColor(pColors, false), (pNormals == IntPtr.Zero) ? null : new OdGeVector3d(pNormals, false), (pExtrusions == IntPtr.Zero) ? null : new OdGeVector3d(pExtrusions, false));
		}

		private void SwigDirectorpolypointProc__SWIG_2(IntPtr numPoints, IntPtr pColors, IntPtr pNormals)
		{
			this.polypointProc(Helpers.UnMarshalPoint3dArray(numPoints), (pColors == IntPtr.Zero) ? null : new OdCmEntityColor(pColors, false), (pNormals == IntPtr.Zero) ? null : new OdGeVector3d(pNormals, false));
		}

		private void SwigDirectorpolypointProc__SWIG_3(IntPtr numPoints, IntPtr pColors)
		{
			this.polypointProc(Helpers.UnMarshalPoint3dArray(numPoints), (pColors == IntPtr.Zero) ? null : new OdCmEntityColor(pColors, false));
		}

		private void SwigDirectorrowOfDotsProc(int numPoints, IntPtr startPoint, IntPtr dirToNextPoint)
		{
			this.rowOfDotsProc(numPoints, new OdGePoint3d(startPoint, false), new OdGeVector3d(dirToNextPoint, false));
		}

		private bool SwigDirectorplineArcSegmentsAsArcProc(uint drawContextFlags)
		{
			return this.plineArcSegmentsAsArcProc(drawContextFlags);
		}

		private void SwigDirectorpolylineOut__SWIG_0(IntPtr numPoints)
		{
			this.polylineOut(Helpers.UnMarshalPoint3dArray(numPoints));
		}

		private void SwigDirectorpolygonOut__SWIG_0(IntPtr numPoints, IntPtr pNormal)
		{
			this.polygonOut(Helpers.UnMarshalPoint3dArray(numPoints), (pNormal == IntPtr.Zero) ? null : new OdGeVector3d(pNormal, false));
		}

		private void SwigDirectorpolygonOut__SWIG_1(IntPtr numPoints)
		{
			this.polygonOut(Helpers.UnMarshalPoint3dArray(numPoints));
		}

		private void SwigDirectorgenerateMeshWires(IntPtr numRows)
		{
			this.generateMeshWires(Helpers.UnMarshalMeshData(numRows));
		}

		private void SwigDirectorgenerateMeshFaces(IntPtr numRows)
		{
			this.generateMeshFaces(Helpers.UnMarshalFaceData(numRows));
		}

		private void SwigDirectormeshFaceOut(IntPtr faceList, IntPtr pNormal)
		{
			this.meshFaceOut((faceList == IntPtr.Zero) ? null : new SWIGTYPE_p_OdInt32(faceList, false), (pNormal == IntPtr.Zero) ? null : new OdGeVector3d(pNormal, false));
		}

		private void SwigDirectorgenerateShellWires__SWIG_0(IntPtr faceListSize, EdgeData pEdgeData, FaceData pFaceData)
		{
			this.generateShellWires(Helpers.UnMarshalInt32FixedArray(faceListSize), pEdgeData, pFaceData);
		}

		private void SwigDirectorgenerateShellWires__SWIG_1(IntPtr faceListSize, EdgeData pEdgeData)
		{
			this.generateShellWires(Helpers.UnMarshalInt32FixedArray(faceListSize), pEdgeData);
		}

		private void SwigDirectorgenerateShellWires__SWIG_2(IntPtr faceListSize)
		{
			this.generateShellWires(Helpers.UnMarshalInt32FixedArray(faceListSize));
		}

		private void SwigDirectorgenerateShellFaces__SWIG_0(IntPtr faceListSize, EdgeData pEdgeData, FaceData pFaceData)
		{
			this.generateShellFaces(Helpers.UnMarshalInt32FixedArray(faceListSize), pEdgeData, pFaceData);
		}

		private void SwigDirectorgenerateShellFaces__SWIG_1(IntPtr faceListSize, EdgeData pEdgeData)
		{
			this.generateShellFaces(Helpers.UnMarshalInt32FixedArray(faceListSize), pEdgeData);
		}

		private void SwigDirectorgenerateShellFaces__SWIG_2(IntPtr faceListSize)
		{
			this.generateShellFaces(Helpers.UnMarshalInt32FixedArray(faceListSize));
		}

		private void SwigDirectorshellFaceOut(IntPtr faceListSize, IntPtr pNormal)
		{
			this.shellFaceOut(Helpers.UnMarshalInt32FixedArray(faceListSize), (pNormal == IntPtr.Zero) ? null : new OdGeVector3d(pNormal, false));
		}

		private void SwigDirectortriangleOut(IntPtr vertices, IntPtr pNormal)
		{
			this.triangleOut(Helpers.UnMarshalInt32FixedArray(vertices), (pNormal == IntPtr.Zero) ? null : new OdGeVector3d(pNormal, false));
		}

		private void SwigDirectorgenerateShellFacets__SWIG_0(IntPtr faceListSize, FaceData pFaceData, int maxFacetSize)
		{
			this.generateShellFacets(Helpers.UnMarshalInt32FixedArray(faceListSize), pFaceData, maxFacetSize);
		}

		private void SwigDirectorgenerateShellFacets__SWIG_1(IntPtr faceListSize, FaceData pFaceData)
		{
			this.generateShellFacets(Helpers.UnMarshalInt32FixedArray(faceListSize), pFaceData);
		}

		private void SwigDirectorgenerateShellFacets__SWIG_2(IntPtr faceListSize)
		{
			this.generateShellFacets(Helpers.UnMarshalInt32FixedArray(faceListSize));
		}

		private void SwigDirectorfacetOut(IntPtr faceList, IntPtr edgeIndices, IntPtr pNormal)
		{
			this.facetOut((faceList == IntPtr.Zero) ? null : new SWIGTYPE_p_OdInt32(faceList, false), Helpers.UnMarshalInt32FixedArray(edgeIndices), (pNormal == IntPtr.Zero) ? null : new OdGeVector3d(pNormal, false));
		}

		private bool SwigDirectorellipArcProc__SWIG_4(IntPtr ellipArc, double width)
		{
			return this.ellipArcProc(new OdGeEllipArc3d(ellipArc, false), width);
		}

		private void SwigDirectorinitTexture(IntPtr origin, IntPtr u, IntPtr v, IntPtr pImage, bool transparency, double brightness, double contrast, double fade)
		{
			this.initTexture(new OdGePoint3d(origin, false), new OdGeVector3d(u, false), new OdGeVector3d(v, false), (OdGiRasterImage)Teigha.Core.Helpers.odrxCreateObjectInternal(pImage, false), transparency, brightness, contrast, fade);
		}

		private void SwigDirectoruninitTexture()
		{
			this.uninitTexture();
		}

		private void SwigDirectorpolylineOut__SWIG_1(int numPoints, IntPtr vertexIndexList)
		{
			this.polylineOut(numPoints, Helpers.UnMarshalInt32FixedArray(vertexIndexList));
		}

		private object locker = new object();

		private HandleRef swigCPtr;

		protected bool swigCMemOwn;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_0 swigDelegate0;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_1 swigDelegate1;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_2 swigDelegate2;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_3 swigDelegate3;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_4 swigDelegate4;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_5 swigDelegate5;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_6 swigDelegate6;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_7 swigDelegate7;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_8 swigDelegate8;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_9 swigDelegate9;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_10 swigDelegate10;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_11 swigDelegate11;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_12 swigDelegate12;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_13 swigDelegate13;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_14 swigDelegate14;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_15 swigDelegate15;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_16 swigDelegate16;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_17 swigDelegate17;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_18 swigDelegate18;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_19 swigDelegate19;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_20 swigDelegate20;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_21 swigDelegate21;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_22 swigDelegate22;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_23 swigDelegate23;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_24 swigDelegate24;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_25 swigDelegate25;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_26 swigDelegate26;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_27 swigDelegate27;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_28 swigDelegate28;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_29 swigDelegate29;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_30 swigDelegate30;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_31 swigDelegate31;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_32 swigDelegate32;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_33 swigDelegate33;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_34 swigDelegate34;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_35 swigDelegate35;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_36 swigDelegate36;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_37 swigDelegate37;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_38 swigDelegate38;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_39 swigDelegate39;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_40 swigDelegate40;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_41 swigDelegate41;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_42 swigDelegate42;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_43 swigDelegate43;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_44 swigDelegate44;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_45 swigDelegate45;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_46 swigDelegate46;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_47 swigDelegate47;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_48 swigDelegate48;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_49 swigDelegate49;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_50 swigDelegate50;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_51 swigDelegate51;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_52 swigDelegate52;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_53 swigDelegate53;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_54 swigDelegate54;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_55 swigDelegate55;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_56 swigDelegate56;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_57 swigDelegate57;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_58 swigDelegate58;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_59 swigDelegate59;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_60 swigDelegate60;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_61 swigDelegate61;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_62 swigDelegate62;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_63 swigDelegate63;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_64 swigDelegate64;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_65 swigDelegate65;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_66 swigDelegate66;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_67 swigDelegate67;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_68 swigDelegate68;

		private OdGiGeometrySimplifier.SwigDelegateOdGiGeometrySimplifier_69 swigDelegate69;

		private static Type[] swigMethodTypes0 = new Type[]
		{
			typeof(OdGiPolyline),
			typeof(OdGeMatrix3d),
			typeof(uint),
			typeof(uint)
		};

		private static Type[] swigMethodTypes1 = new Type[]
		{
			typeof(OdGiPolyline),
			typeof(OdGeMatrix3d),
			typeof(uint)
		};

		private static Type[] swigMethodTypes2 = new Type[]
		{
			typeof(OdGiPolyline),
			typeof(OdGeMatrix3d)
		};

		private static Type[] swigMethodTypes3 = new Type[]
		{
			typeof(OdGiPolyline)
		};

		private static Type[] swigMethodTypes4 = new Type[]
		{
			typeof(OdGePoint3d[]),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(IntPtr)
		};

		private static Type[] swigMethodTypes5 = new Type[]
		{
			typeof(OdGePoint3d[]),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes6 = new Type[]
		{
			typeof(OdGePoint3d[]),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes7 = new Type[]
		{
			typeof(OdGePoint3d[])
		};

		private static Type[] swigMethodTypes8 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGePoint3d)
		};

		private static Type[] swigMethodTypes9 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGePoint3d)
		};

		private static Type[] swigMethodTypes10 = new Type[]
		{
			typeof(MeshData)
		};

		private static Type[] swigMethodTypes11 = new Type[]
		{
			typeof(ShellData)
		};

		private static Type[] swigMethodTypes12 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(double),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes13 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGePoint3d),
			typeof(OdGePoint3d),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes14 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(double),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(double),
			typeof(OdGiArcType),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes15 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGePoint3d),
			typeof(OdGePoint3d),
			typeof(OdGiArcType),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes16 = new Type[]
		{
			typeof(OdGeEllipArc3d),
			typeof(OdGePoint3d[]),
			typeof(OdGiArcType),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes17 = new Type[]
		{
			typeof(OdGeEllipArc3d),
			typeof(OdGePoint3d[]),
			typeof(OdGiArcType)
		};

		private static Type[] swigMethodTypes18 = new Type[]
		{
			typeof(OdGeEllipArc3d),
			typeof(OdGePoint3d[])
		};

		private static Type[] swigMethodTypes19 = new Type[]
		{
			typeof(OdGeEllipArc3d)
		};

		private static Type[] swigMethodTypes20 = new Type[]
		{
			typeof(OdGeNurbCurve3d)
		};

		private static Type[] swigMethodTypes21 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(string),
			typeof(bool),
			typeof(OdGiTextStyle),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes22 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(string),
			typeof(bool),
			typeof(OdGiTextStyle),
			typeof(OdGeVector3d),
			typeof(OdGeExtents3d)
		};

		private static Type[] swigMethodTypes23 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(int),
			typeof(OdGiTextStyle),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes24 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(int),
			typeof(OdGiTextStyle)
		};

		private static Type[] swigMethodTypes25 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(OdGiRasterImage),
			typeof(OdGePoint2d[]),
			typeof(bool),
			typeof(double),
			typeof(double),
			typeof(double)
		};

		private static Type[] swigMethodTypes26 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(OdGiRasterImage),
			typeof(OdGePoint2d[]),
			typeof(bool),
			typeof(double),
			typeof(double)
		};

		private static Type[] swigMethodTypes27 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(OdGiRasterImage),
			typeof(OdGePoint2d[]),
			typeof(bool),
			typeof(double)
		};

		private static Type[] swigMethodTypes28 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(OdGiRasterImage),
			typeof(OdGePoint2d[]),
			typeof(bool)
		};

		private static Type[] swigMethodTypes29 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(OdGiRasterImage),
			typeof(OdGePoint2d[])
		};

		private static Type[] swigMethodTypes30 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(OdGiMetafile),
			typeof(bool),
			typeof(bool)
		};

		private static Type[] swigMethodTypes31 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(OdGiMetafile),
			typeof(bool)
		};

		private static Type[] swigMethodTypes32 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(OdGiMetafile)
		};

		private static Type[] swigMethodTypes33 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes34 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes35 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(bool)
		};

		private static Type[] swigMethodTypes36 = new Type[]
		{
			typeof(OdGePoint3d)
		};

		private static Type[] swigMethodTypes37 = new Type[0];

		private static Type[] swigMethodTypes38 = new Type[]
		{
			typeof(char),
			typeof(OdGePoint3d),
			typeof(OdGeBoundBlock3d)
		};

		private static Type[] swigMethodTypes39 = new Type[]
		{
			typeof(OdGePoint3d[]),
			typeof(int[]),
			typeof(byte[]),
			typeof(FaceData)
		};

		private static Type[] swigMethodTypes40 = new Type[]
		{
			typeof(OdGePoint3d[]),
			typeof(int[]),
			typeof(byte[])
		};

		private static Type[] swigMethodTypes41 = new Type[]
		{
			typeof(OdGeBoundBlock3d),
			typeof(uint).MakeByRefType()
		};

		private static Type[] swigMethodTypes42 = new Type[]
		{
			typeof(OdGePoint3d[]),
			typeof(OdCmEntityColor),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(IntPtr[])
		};

		private static Type[] swigMethodTypes43 = new Type[]
		{
			typeof(OdGePoint3d[]),
			typeof(OdCmEntityColor),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes44 = new Type[]
		{
			typeof(OdGePoint3d[]),
			typeof(OdCmEntityColor),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes45 = new Type[]
		{
			typeof(OdGePoint3d[]),
			typeof(OdCmEntityColor)
		};

		private static Type[] swigMethodTypes46 = new Type[]
		{
			typeof(int),
			typeof(OdGePoint3d),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes47 = new Type[]
		{
			typeof(uint)
		};

		private static Type[] swigMethodTypes48 = new Type[]
		{
			typeof(OdGePoint3d[])
		};

		private static Type[] swigMethodTypes49 = new Type[]
		{
			typeof(OdGePoint3d[]),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes50 = new Type[]
		{
			typeof(OdGePoint3d[])
		};

		private static Type[] swigMethodTypes51 = new Type[]
		{
			typeof(MeshData)
		};

		private static Type[] swigMethodTypes52 = new Type[]
		{
			typeof(MeshData)
		};

		private static Type[] swigMethodTypes53 = new Type[]
		{
			typeof(SWIGTYPE_p_OdInt32),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes54 = new Type[]
		{
			typeof(int[]),
			typeof(EdgeData),
			typeof(FaceData)
		};

		private static Type[] swigMethodTypes55 = new Type[]
		{
			typeof(int[]),
			typeof(EdgeData)
		};

		private static Type[] swigMethodTypes56 = new Type[]
		{
			typeof(int[])
		};

		private static Type[] swigMethodTypes57 = new Type[]
		{
			typeof(int[]),
			typeof(EdgeData),
			typeof(FaceData)
		};

		private static Type[] swigMethodTypes58 = new Type[]
		{
			typeof(int[]),
			typeof(EdgeData)
		};

		private static Type[] swigMethodTypes59 = new Type[]
		{
			typeof(int[])
		};

		private static Type[] swigMethodTypes60 = new Type[]
		{
			typeof(int[]),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes61 = new Type[]
		{
			typeof(int[]),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes62 = new Type[]
		{
			typeof(int[]),
			typeof(FaceData),
			typeof(int)
		};

		private static Type[] swigMethodTypes63 = new Type[]
		{
			typeof(int[]),
			typeof(FaceData)
		};

		private static Type[] swigMethodTypes64 = new Type[]
		{
			typeof(int[])
		};

		private static Type[] swigMethodTypes65 = new Type[]
		{
			typeof(SWIGTYPE_p_OdInt32),
			typeof(int[]),
			typeof(OdGeVector3d)
		};

		private static Type[] swigMethodTypes66 = new Type[]
		{
			typeof(OdGeEllipArc3d),
			typeof(double)
		};

		private static Type[] swigMethodTypes67 = new Type[]
		{
			typeof(OdGePoint3d),
			typeof(OdGeVector3d),
			typeof(OdGeVector3d),
			typeof(OdGiRasterImage),
			typeof(bool),
			typeof(double),
			typeof(double),
			typeof(double)
		};

		private static Type[] swigMethodTypes68 = new Type[0];

		private static Type[] swigMethodTypes69 = new Type[]
		{
			typeof(int),
			typeof(int[])
		};

		public delegate void SwigDelegateOdGiGeometrySimplifier_0(IntPtr polyline, IntPtr pXfm, uint fromIndex, uint numSegs);

		public delegate void SwigDelegateOdGiGeometrySimplifier_1(IntPtr polyline, IntPtr pXfm, uint fromIndex);

		public delegate void SwigDelegateOdGiGeometrySimplifier_2(IntPtr polyline, IntPtr pXfm);

		public delegate void SwigDelegateOdGiGeometrySimplifier_3(IntPtr polyline);

		public delegate void SwigDelegateOdGiGeometrySimplifier_4(IntPtr numPoints, IntPtr pNormal, IntPtr pExtrusion, IntPtr baseSubEntMarker);

		public delegate void SwigDelegateOdGiGeometrySimplifier_5(IntPtr numPoints, IntPtr pNormal, IntPtr pExtrusion);

		public delegate void SwigDelegateOdGiGeometrySimplifier_6(IntPtr numPoints, IntPtr pNormal);

		public delegate void SwigDelegateOdGiGeometrySimplifier_7(IntPtr numPoints);

		public delegate void SwigDelegateOdGiGeometrySimplifier_8(IntPtr firstPoint, IntPtr secondPoint);

		public delegate void SwigDelegateOdGiGeometrySimplifier_9(IntPtr basePoint, IntPtr throughPoint);

		public delegate void SwigDelegateOdGiGeometrySimplifier_10(IntPtr numRows);

		public delegate void SwigDelegateOdGiGeometrySimplifier_11(IntPtr numVertices);

		public delegate void SwigDelegateOdGiGeometrySimplifier_12(IntPtr center, double radius, IntPtr normal, IntPtr pExtrusion);

		public delegate void SwigDelegateOdGiGeometrySimplifier_13(IntPtr firstPoint, IntPtr secondPoint, IntPtr thirdPoint, IntPtr pExtrusion);

		public delegate void SwigDelegateOdGiGeometrySimplifier_14(IntPtr center, double radius, IntPtr normal, IntPtr startVector, double sweepAngle, int arcType, IntPtr pExtrusion);

		public delegate void SwigDelegateOdGiGeometrySimplifier_15(IntPtr firstPoint, IntPtr secondPoint, IntPtr thirdPoint, int arcType, IntPtr pExtrusion);

		public delegate void SwigDelegateOdGiGeometrySimplifier_16(IntPtr ellipArc, IntPtr endPointOverrides, int arcType, IntPtr pExtrusion);

		public delegate void SwigDelegateOdGiGeometrySimplifier_17(IntPtr ellipArc, IntPtr endPointOverrides, int arcType);

		public delegate void SwigDelegateOdGiGeometrySimplifier_18(IntPtr ellipArc, IntPtr endPointOverrides);

		public delegate void SwigDelegateOdGiGeometrySimplifier_19(IntPtr ellipArc);

		public delegate void SwigDelegateOdGiGeometrySimplifier_20(IntPtr nurbsCurve);

		public delegate void SwigDelegateOdGiGeometrySimplifier_21(IntPtr position, IntPtr u, IntPtr v, [MarshalAs(UnmanagedType.LPWStr)] string msg, bool raw, IntPtr pTextStyle, IntPtr pExtrusion);

		public delegate void SwigDelegateOdGiGeometrySimplifier_22(IntPtr position, IntPtr u, IntPtr v, [MarshalAs(UnmanagedType.LPWStr)] string msg, bool raw, IntPtr pTextStyle, IntPtr pExtrusion, IntPtr extentsBox);

		public delegate void SwigDelegateOdGiGeometrySimplifier_23(IntPtr position, IntPtr direction, IntPtr upVector, int shapeNumber, IntPtr pTextStyle, IntPtr pExtrusion);

		public delegate void SwigDelegateOdGiGeometrySimplifier_24(IntPtr position, IntPtr direction, IntPtr upVector, int shapeNumber, IntPtr pTextStyle);

		public delegate void SwigDelegateOdGiGeometrySimplifier_25(IntPtr origin, IntPtr u, IntPtr v, IntPtr pImage, IntPtr uvBoundary, bool transparency, double brightness, double contrast, double fade);

		public delegate void SwigDelegateOdGiGeometrySimplifier_26(IntPtr origin, IntPtr u, IntPtr v, IntPtr pImage, IntPtr uvBoundary, bool transparency, double brightness, double contrast);

		public delegate void SwigDelegateOdGiGeometrySimplifier_27(IntPtr origin, IntPtr u, IntPtr v, IntPtr pImage, IntPtr uvBoundary, bool transparency, double brightness);

		public delegate void SwigDelegateOdGiGeometrySimplifier_28(IntPtr origin, IntPtr u, IntPtr v, IntPtr pImage, IntPtr uvBoundary, bool transparency);

		public delegate void SwigDelegateOdGiGeometrySimplifier_29(IntPtr origin, IntPtr u, IntPtr v, IntPtr pImage, IntPtr uvBoundary);

		public delegate void SwigDelegateOdGiGeometrySimplifier_30(IntPtr origin, IntPtr u, IntPtr v, IntPtr pMetafile, bool dcAligned, bool allowClipping);

		public delegate void SwigDelegateOdGiGeometrySimplifier_31(IntPtr origin, IntPtr u, IntPtr v, IntPtr pMetafile, bool dcAligned);

		public delegate void SwigDelegateOdGiGeometrySimplifier_32(IntPtr origin, IntPtr u, IntPtr v, IntPtr pMetafile);

		public delegate void SwigDelegateOdGiGeometrySimplifier_33(IntPtr basePoint, IntPtr direction);

		public delegate void SwigDelegateOdGiGeometrySimplifier_34(IntPtr basePoint, IntPtr direction);

		public delegate void SwigDelegateOdGiGeometrySimplifier_35(IntPtr arg0, bool arg1);

		public delegate void SwigDelegateOdGiGeometrySimplifier_36(IntPtr arg0);

		public delegate int SwigDelegateOdGiGeometrySimplifier_37();

		public delegate bool SwigDelegateOdGiGeometrySimplifier_38(char arg0, IntPtr arg1, IntPtr arg2);

		public delegate void SwigDelegateOdGiGeometrySimplifier_39(IntPtr numVertices, IntPtr faceListSize, IntPtr pBezierTypes, FaceData pFaceData);

		public delegate void SwigDelegateOdGiGeometrySimplifier_40(IntPtr numVertices, IntPtr faceListSize, IntPtr pBezierTypes);

		public delegate void SwigDelegateOdGiGeometrySimplifier_41(IntPtr arg0, uint arg1);

		public delegate void SwigDelegateOdGiGeometrySimplifier_42(IntPtr numPoints, IntPtr pColors, IntPtr pNormals, IntPtr pExtrusions, IntPtr pSubEntMarkers);

		public delegate void SwigDelegateOdGiGeometrySimplifier_43(IntPtr numPoints, IntPtr pColors, IntPtr pNormals, IntPtr pExtrusions);

		public delegate void SwigDelegateOdGiGeometrySimplifier_44(IntPtr numPoints, IntPtr pColors, IntPtr pNormals);

		public delegate void SwigDelegateOdGiGeometrySimplifier_45(IntPtr numPoints, IntPtr pColors);

		public delegate void SwigDelegateOdGiGeometrySimplifier_46(int numPoints, IntPtr startPoint, IntPtr dirToNextPoint);

		public delegate bool SwigDelegateOdGiGeometrySimplifier_47(uint drawContextFlags);

		public delegate void SwigDelegateOdGiGeometrySimplifier_48(IntPtr numPoints);

		public delegate void SwigDelegateOdGiGeometrySimplifier_49(IntPtr numPoints, IntPtr pNormal);

		public delegate void SwigDelegateOdGiGeometrySimplifier_50(IntPtr numPoints);

		public delegate void SwigDelegateOdGiGeometrySimplifier_51(IntPtr numRows);

		public delegate void SwigDelegateOdGiGeometrySimplifier_52(IntPtr numRows);

		public delegate void SwigDelegateOdGiGeometrySimplifier_53(IntPtr faceList, IntPtr pNormal);

		public delegate void SwigDelegateOdGiGeometrySimplifier_54(IntPtr faceListSize, EdgeData pEdgeData, FaceData pFaceData);

		public delegate void SwigDelegateOdGiGeometrySimplifier_55(IntPtr faceListSize, EdgeData pEdgeData);

		public delegate void SwigDelegateOdGiGeometrySimplifier_56(IntPtr faceListSize);

		public delegate void SwigDelegateOdGiGeometrySimplifier_57(IntPtr faceListSize, EdgeData pEdgeData, FaceData pFaceData);

		public delegate void SwigDelegateOdGiGeometrySimplifier_58(IntPtr faceListSize, EdgeData pEdgeData);

		public delegate void SwigDelegateOdGiGeometrySimplifier_59(IntPtr faceListSize);

		public delegate void SwigDelegateOdGiGeometrySimplifier_60(IntPtr faceListSize, IntPtr pNormal);

		public delegate void SwigDelegateOdGiGeometrySimplifier_61(IntPtr vertices, IntPtr pNormal);

		public delegate void SwigDelegateOdGiGeometrySimplifier_62(IntPtr faceListSize, FaceData pFaceData, int maxFacetSize);

		public delegate void SwigDelegateOdGiGeometrySimplifier_63(IntPtr faceListSize, FaceData pFaceData);

		public delegate void SwigDelegateOdGiGeometrySimplifier_64(IntPtr faceListSize);

		public delegate void SwigDelegateOdGiGeometrySimplifier_65(IntPtr faceList, IntPtr edgeIndices, IntPtr pNormal);

		public delegate bool SwigDelegateOdGiGeometrySimplifier_66(IntPtr ellipArc, double width);

		public delegate void SwigDelegateOdGiGeometrySimplifier_67(IntPtr origin, IntPtr u, IntPtr v, IntPtr pImage, bool transparency, double brightness, double contrast, double fade);

		public delegate void SwigDelegateOdGiGeometrySimplifier_68();

		public delegate void SwigDelegateOdGiGeometrySimplifier_69(int numPoints, IntPtr vertexIndexList);
	}
}
